home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / tex / mf / inputs / misc / rsym.mf < prev    next >
Text File  |  1992-09-12  |  62KB  |  1,733 lines

  1. % This is RSYM.MF in text format, version 1.1
  2.  
  3. cmchar "therefore";
  4. beginchar(hex"05",12u#,x_height#,0);
  5. italcorr 0;
  6. adjust_fit(0,0); pickup fine.nib;
  7. numeric dot_diam#; dot_diam#=if monospace: 5/4 fi\\ dot_size#;
  8. define_whole_blacker_pixels(dot_diam);
  9. pos1(dot_diam,0); pos2(dot_diam,90);
  10. pos3(dot_diam,0); pos4(dot_diam,90);
  11. pos5(dot_diam,0); pos6(dot_diam,90);
  12. lft x1l=hround(.5w-.5dot_diam); y1+.5dot_diam=vround(x_height+.5dot_diam);
  13. x1=.5[x3,x5];  y3=y5; bot y4l=0;
  14. sqrt3 * (x5-x3) = 2(y1-y4);
  15. z1=z2; dot(1,2);  % dots
  16. z3=z4; dot(3,4);
  17. z5=z6; dot(5,6);
  18. penlabels(1,2,3,4,5,6); endchar;
  19.  
  20. cmchar "pointer";
  21. beginchar(hex"09",9u#,fig_height#,0);
  22. italcorr 0;
  23. adjust_fit(0,0); pickup rule.nib;
  24. lft x1 = hround .5u;
  25. rt  x4 = hround (w-.6u);
  26. x7=x1; x2=x3=x5=x6=.5[x1,x4];
  27. (top y5) - (bot y3) = h;
  28. y5-y6 = y2-y3 = vround .3h;
  29. y4=good.y .5[-d,h]=.5[y3,y5];
  30. y1=y2; y7=y6;
  31. draw z1--z2--z3--z4--z5--z6--z7--cycle;
  32. labels(1,2,3,4,5,6,7); endchar;
  33.  
  34. cmchar "lightning";
  35. beginchar(hex"12",8u#,asc_height#,.5desc_depth#);
  36. italcorr 0;
  37. adjust_fit(0,0); pickup rule.nib;
  38. x1 = .5w; x3 = w-u; x2 = u; x5 = .5w - u;
  39. top y1 = h; bot y5 = -d; y2=y3=.5[y4,y1]; z4=1/5[z5,z3];
  40. z6 = 2[z5,z4] = .5[z7,z8]; y8 = y6; x8-x7 = .5(x3-x2);
  41. x5'=.5[x4,x5]; y5'=y5;
  42. draw z1--z2--z3--z4;
  43. filldraw z5'--z7--z8--cycle;
  44. labels(1,2,3,4,5,6,7); endchar;
  45.  
  46. cmchar "inverse logical not sign";
  47. beginchar(hex"18",12u#,x_height#,0);
  48. italcorr x_height#*slant-.5u#;
  49. adjust_fit(if monospace: -1.5u#,-1.5u# else: 0,0 fi); pickup rule.nib;
  50. lft x2=hround u-eps; x3=w-x2; x1=x2;
  51. y2=y3=good.y .5[bar_height,h]; y3-y1=1.2(h-bar_height);
  52. draw z1--z2--z3;  % bar and stem
  53. labels(1,2,3); endchar;
  54.  
  55. cmchar "aries";
  56. beginchar(hex"17",asc_height#+2u#,asc_height#,0);
  57. italcorr 2/3asc_height#*slant;
  58. adjust_fit(0,0); pickup rule.nib;
  59. y1=y6; y2-y1=x2-x1; top y2 = h+oo; y5=y2; bot y4 = 0-oo;
  60. y3=.85[y4,y1];
  61. x3-x1 = x6-x3 = 1/2h; x3 = x4 = good.x .5w;
  62. x2=.5[x1,x3]; x5=.5[x3,x6];
  63. draw z1{dir 100}..z2..z3---z4 & z4---z3..z5..{dir -100}z6;
  64. labels(1,2,3); endchar;
  65.  
  66. cmchar "taurus";
  67. beginchar(hex"5D",asc_height#+2u#,asc_height#,0);
  68. italcorr .7asc_height#*slant;
  69. adjust_fit(0,0);
  70. pickup rule.nib; autorounded;
  71. x4 = good.x .5w; y8-y4=x2-x6=2/3h; y2=good.y .34h;
  72. circle_points;
  73. draw_circle;
  74. x2'=x2; x6'=x6; y2'=y6'=h;
  75. x8'=x4; y8'=2h;
  76. draw z2'{z2'-z8'}..z8..{z8'-z6'}z6';
  77. labels(1,2,3,4,5,6,7,8);
  78. labels(2',6',8'); endchar;
  79.  
  80. cmchar "gemini";
  81. beginchar(hex"5E",asc_height#+2u#,asc_height#,0);
  82. italcorr 2/3asc_height#*slant;
  83. adjust_fit(0,0); pickup rule.nib;
  84. top y2 = h+u; bot y1 = 0-u; y4 = y1; y3 = y2;
  85. x1 = x2 = u; x3 = x4 = w-u; 
  86. bot y5 = 1/18h; top y6 = 17/18h;  y8 = y5;  y7 = y6;
  87. x5 = x6 = 1/3w;  x7 = x8 = 2/3w;
  88. draw z5--z6;
  89. draw z7--z8;
  90. draw z1..z5..z8..z4;
  91. draw z2..z6..z7..z3;
  92. labels(1,2,3,4,5,6,7,8); endchar;
  93.  
  94. cmchar "capricorn";
  95. beginchar(hex"64",asc_height#+2u#,asc_height#,0);
  96. italcorr 2/3asc_height#*slant;
  97. adjust_fit(0,0); pickup rule.nib;
  98. top y1 = h; x1 = hround u;
  99. y2 = y1; x2 = hround (w-u);
  100. x3 = 0.42w; y3 = 0.60h;
  101. x4 = 0.60w; bot y4 = 0;
  102. x5 = x2 + oo; y5 = 0.28h;
  103. x6 = x1; y6 = 0.35h;
  104. draw z1--z2{dir 200}..z3..z4..z5..z3..z6;
  105. labels(1,2,3,4,5,6); endchar;
  106.  
  107. cmchar "pisces";
  108. beginchar(hex"66",asc_height#+2u#,asc_height#,0);
  109. italcorr 2/3asc_height#*slant;
  110. adjust_fit(0,0); pickup rule.nib;
  111. top y2 = h; bot y1 = 0; y4 = y1; y3 = y2;
  112. y2 - y5 = y5 - y1;  y6 = y5;
  113. x5 = 1/3w; x5-x1 = x3-x6;
  114. x1 = x2 = hround u; x3 = x4 = hround w-u; 
  115. draw z5--z6;
  116. draw z1..z5..z2;
  117. draw z3..z6..z4;
  118. labels(1,2,3,4,5,6); endchar;
  119.  
  120. cmchar "virgo";
  121. beginchar(hex"60",1.5asc_height#+2u#,asc_height#,desc_depth#);
  122. italcorr .7asc_height#*slant;
  123. adjust_fit(0,0);
  124. pickup rule.nib; autorounded;
  125. top y1 = h; x1 = hround u;
  126. bot y2 = 0; x2 = hround u + (w-2u)/7;
  127. y4-y3 = x3-x1;  x3=x2;
  128. y4=y7=y10=y1; x4-x3=x5-x4=x7-x5=x8-x7=x10-x8=0.77(x11-x10)=x3-x1;
  129. x5=x6; x8=x9;
  130. y5=y8=y11=y3;
  131. y6=y9=y2;
  132. x9'=x9+1/4(x11-x9);
  133. y9'=y9+2/3(y12-y9);
  134. bot y12 = -d; x12-x6 = x9-x12;
  135. draw z1{right}..{down}z3--z2--z3..z4..z5--z6--z5..z7..z8--z9{down}..z9';
  136. draw z9--z8..z10..z11{down}..z12;
  137. labels(1,2,3,4,5,6,7,8,9,10,11,12);
  138. endchar;
  139.  
  140. cmchar "scorpio";
  141. beginchar(hex"62",1.5asc_height#+2u#,asc_height#,desc_depth#);
  142. italcorr .7asc_height#*slant;
  143. adjust_fit(0,0);
  144. pickup rule.nib; autorounded;
  145. top y1 = h; x1 = hround u;
  146. bot y2 = 0; x2 = hround u + (w-2u)/7;
  147. y4-y3 = x3-x1;  x3=x2;
  148. y4=y7=y10=y1; x4-x3=x5-x4=x7-x5=x8-x7=x10-x8=0.77(x11-x10)=x3-x1;
  149. x5=x6; x8=x9;
  150. y5=y8=y3;
  151. y6=y9=y11=y2;
  152. x12=x11; y12=y11-2u;
  153. x13=x11-2u; y13=y11;
  154. draw z1{right}..{down}z3--z2--z3..z4..z5--z6--z5..z7..z8
  155.  --z9{down}..{dir 45}z11;
  156. draw z12--z11--z13;
  157. labels(1,2,3,4,5,6,7,8,9,10,11,12);
  158. endchar;
  159.  
  160. cmchar "cancer";
  161. beginchar(hex"5F",1.3asc_height#+2u#,asc_height#,0);
  162. italcorr .7asc_height#*slant;
  163. adjust_fit(0,0);
  164. pickup rule.nib; autorounded;
  165. y6 = 0.5h; x6 = hround u; x2-x6 = y8-y4 = 0.35h;
  166. circle_points;
  167. y1'=y1; y2'=y2; y3'=y3; y4'=y4; y5'=y5; y6'=y6; y7'=y7; y8'=y8;
  168. x6'= hround (w-u);
  169. x9 = hround (0.55w); top y9 = h; bot y9' = 0;
  170. x10 = hround (w-u-1/7h); y10-y8' = 1/7h; y4-y10' = 1/7h;
  171. x2'-x6'=x6-x2; x3'-x6'=x6-x3; x4'-x6'=x6-x4; x5'-x6'=x6-x5;
  172. x1'-x6'=x6-x1; x7'-x6'=x6-x7; x8'-x6'=x6-x8; x9'-x6'=x6-x9;
  173. x10'-x6'=x6-x10;
  174. draw z6{up}...z7{z8-z6}
  175.   ...z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
  176.   ...z5{z6-z4}...z6{up}..z9{right}..z10;
  177. draw z6'{down}...z5'{z4'-z6'}
  178.   ...z4'{left}...z3'{z2'-z4'}...z2'{up}...z1'{z8'-z2'}...z8'{right}
  179.   ...z7'{z6'-z8'}...z6'{down}..z9'{left}..z10';
  180. labels(1,2,3,4,5,6,7,8,9,10);
  181. labels(1',2',3',4',5',6',7',8',9',10');
  182. endchar;
  183.  
  184. cmchar "libra";
  185. beginchar(hex"61",1.5asc_height#+2u#,0.75asc_height#,0);
  186. italcorr .7asc_height#*slant;
  187. adjust_fit(0,0);
  188. pickup rule.nib; autorounded;
  189. x4 = good.x .5w; y8-y4=x2-x6=.5w-2u; bot y4 = 0;
  190. circle_points;
  191. top y6' = bot y6;  x6' = x6;
  192. top y2' = bot y2;  x2' = x2;
  193. y9 = y10 = y2'; x10-x9 = w-2u; x10-x4 = x4-x9;
  194. y11 = y12 = y4; x11=x9; x12=x10;
  195. draw z11--z12;
  196. draw z9--z6'{dir 95}..z7..z8..z1..{dir -95}z2'--z10;
  197. labels(1,2',3,4,5,6',7,8,9,10,11,12);
  198. endchar;
  199.  
  200. cmchar "aquarius";
  201. beginchar(hex"65",1.5asc_height#+2u#,x_height#,0);
  202. italcorr .7asc_height#*slant;
  203. adjust_fit(0,0);
  204. pickup rule.nib; autorounded;
  205. x1 = hround u; x6 = hround (w-u);
  206. x2-x1 = x3-x2 = x4-x3 = x5-x4 = x6-x5;
  207. top y2 = h; y2=y4=y6;
  208. bot y1 = 0.55h; y1=y3=y5;
  209. x1'=x1;x2'=x2;x3'=x3;x4'=x4;x5'=x5;x6'=x6;
  210. bot y1' = 0; y1'=y3'=y5';
  211. y2'-y1' = y2-y1; y2'=y4'=y6';
  212. draw z1..z2..z3..z4..z5..z6;
  213. draw z1'..z2'..z3'..z4'..z5'..z6';
  214. labels(1,2.3,4,5,6);
  215. labels(1',2',3',4',5',6');
  216. endchar;
  217.  
  218. cmchar "sun";
  219. beginchar(hex"2E",asc_height#+2u#,asc_height#,0);
  220. italcorr .5asc_height#*slant;
  221. adjust_fit(0,0);
  222. pickup rule.nib; autorounded;
  223. x4 = good.x .5w; y8-y4=x2-x6=3/5h; y2=good.y .5h;
  224. circle_points;
  225. z1'=4/3[z5,z1];
  226. z2'=4/3[z6,z2];
  227. z3'=4/3[z7,z3];
  228. z4'=4/3[z8,z4];
  229. z5'=4/3[z1,z5];
  230. z6'=4/3[z2,z6];
  231. z7'=4/3[z3,z7];
  232. z8'=4/3[z4,z8];
  233. draw_circle;
  234. for n=1 upto 8: draw z[n]--z[n]'; endfor
  235. labels(1,2,3,4,5,6,7,8);
  236. labels(1',2',3',4',5',6',7',8'); endchar;
  237.  
  238. cmchar "check";
  239. beginchar(8,.90*asc_height#+2u#,asc_height#,0);
  240. italcorr asc_height#*slant - .5u#;
  241. adjust_fit(0,0); pickup crisp.nib;
  242. x1=u; x2=x1+.26h; x3=x2+.65h;
  243. y1=.35h; bot y2=0; top y3l=h-eps;
  244. pos1(hair,45); pos2(stem,0); pos3(hair,-45);
  245. filldraw stroke z1e{(1,-1)}..z2e;
  246. filldraw stroke z2e..{(1,1)}z3e;
  247. penlabels(1,2,3); endchar;
  248.  
  249. cmchar "bell";
  250. beginchar(10,1.7math_axis#+u#,1.9math_axis#,0);
  251. italcorr u#*slant + .5u#;
  252. adjust_fit(0,0); pickup crisp.nib;
  253. x11=good.x u; x14 = good.x .5w; x17-x14=x14-x11;
  254. x12=x11; x16=x17; x13=1/3[x12,x14]; x15=1/3[x16,x14];
  255. bot y11=1.5u; y17=y11; y12=y11+stem; y16=y12;
  256. top y14=h; y13=y15=.5[y12,y14];
  257. filldraw z11--z12{right}..z13..z14{right}..z15..{right}z16--z17--cycle;
  258. x1=x3=x14; y1-y3=x2-x4=1.6u; x1=.5[x2,x4]; y4=y2=.5[y1,y3]=good.y .8u;
  259. filldraw z1..z2..z3..z4..cycle;
  260. labels(1,2,3,4,11,12,13,14,15,16,17); endchar;
  261.  
  262. cmchar "1/8 note";
  263. beginchar(11,10u#,asc_height#,0);
  264. italcorr 1/3asc_height#*slant;
  265. adjust_fit(0,0); pickup crisp.nib;
  266. lft x1=u; rt x3r=.5w; rt x7r = w-u;
  267. x5=x5'=x3; x7'=x7; x2=x4=.5[x1,x3r];
  268. bot y2=0; top y4=3u; y1=y3=.5[y2,y4];
  269. top y5=h; y7=1/3h; z6=.5[z5,z7];
  270. pos3(hair,0); pos5(hair,0); pos7(hair,0);
  271. pos5'(hair,0); pos7'(hair,0);
  272. y5-y5'=y7'-y7=1.0u;
  273. pos6(2u,45);
  274. filldraw z1..z2..z3r..z4..cycle; % corpus
  275. filldraw stroke z3e--z5e; % beam
  276. filldraw stroke z5'e{down}...z6e...{down}z7'e--z7e; % flag
  277. penlabels(3,5,5',6,7,7'); labels(1,2,4); endchar;
  278.  
  279. cmchar "1/4 note";
  280. beginchar(12,6u#,asc_height#,0);
  281. italcorr 1/3asc_height#*slant;
  282. adjust_fit(0,0); pickup crisp.nib;
  283. lft x1=u; rt x3r=w-u;
  284. x5=x3; x2=x4=.5[x1,x3r];
  285. bot y2=0; top y4=3u; y1=y3=.5[y2,y4];
  286. top y5=h;
  287. pos3(hair,0); pos5(hair,0);
  288. filldraw z1..z2..z3r..z4..cycle; % corpus
  289. filldraw stroke z3e--z5e; % beam
  290. penlabels(3,5); labels(1,2,4); endchar;
  291.  
  292. cmchar "1/2 note";
  293. beginchar(13,6u#,asc_height#,0);
  294. italcorr 1/3asc_height#*slant;
  295. adjust_fit(0,0); pickup crisp.nib;
  296. .5[x1,x3] = good.x .5w; x3r-x1r=4u;
  297. x5=x3; x2=x4=.5[x1,x3];
  298. bot y2=0; top y4=3u; y1=y3=.5[y2,y4];
  299. top y5=h;
  300. pos1(hair,180); pos3(hair,0); pos5(hair,0);
  301. pos2(2hair,-90); pos4(2hair,90);
  302. penstroke z1e..z2e..z3e..z4e..cycle; % corpus
  303. filldraw stroke z3e--z5e; % beam
  304. penlabels(1,2,3,4,5); endchar;
  305.  
  306. cmchar "1/1 note";
  307. beginchar(14,7u#,3.5u#,0.5u#);
  308. italcorr 1/3asc_height#*slant;
  309. adjust_fit(0,0); pickup crisp.nib;
  310. .5[x1,x3] = good.x .5w; x3r-x1r=5u;
  311. x2=x4=.5[x1,x3];
  312. y4r-y2r=vround h+eps; y1=y3=.5[y2,y4]=good.y .5(h-d);
  313. pos1(2.5hair,180); pos3(2.5hair,0);
  314. pos2(vair,-90); pos4(vair,90);
  315. penstroke z1e..z2e..z3e..z4e..cycle; % corpus
  316. penlabels(1,2,3,4); endchar;
  317.  
  318. cmchar "2 1/8 notes";
  319. beginchar(15,13u#,asc_height#,0);
  320. italcorr 1/3asc_height#*slant;
  321. adjust_fit(0,0); pickup crisp.nib;
  322. lft x1=u; x3=x1+4u;
  323. x5=x3; x2=x4=.5[x1,x3r];
  324. bot y2=.2h; top y4=y2+3u; y1=y3=.5[y2,y4];
  325. top y5=h;
  326. x1'=x3'-4u; rt x3'r=w-u;
  327. x5'=x3'; x2'=x4'=.5[x1',x3'r];
  328. bot y2'=0; top y4'=3u; y1'=y3'=.5[y2',y4'];
  329. top y5'=.8h;
  330. pos3(hair,0); pos5(hair,0);
  331. pos3'(hair,0); pos5'(hair,0);
  332. pos6(3hair,-90); pos6'(3hair,-90);
  333. x6=x5l; x6'=x5'r;
  334. y6'l=y5'; y6l=y5 + (hair/(x6'-x6))*(y5-y5') + eps;
  335. filldraw z1..z2..z3r..z4..cycle; % corpus 1
  336. filldraw z1'..z2'..z3'r..z4'..cycle; % corpus 2
  337. filldraw stroke z3e--z5e; % beam 1
  338. filldraw stroke z3'e--z5'e; % beam 2
  339. filldraw stroke z6e--z6'e; % bar
  340. penlabels(3,5,6,7); labels(1,2,4); endchar;
  341.  
  342. cmchar "female";
  343. beginchar(hex"19",x_height#+2u#,1.7x_height#-desc_depth#,desc_depth#);
  344. italcorr 1/2x_height#*slant;
  345. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  346. pickup rule.nib; autorounded;
  347. lft x6=hround u; x8=good.x (.5x_height + u);
  348. y6 = good.y (h-.5x_height); y8-y4=x2-x6;
  349. circle_points;
  350. x9 := x8;
  351. numeric a; a = round .5(h+d-x_height) + eps;
  352. x10=x8-a;
  353. x11=x8+a;
  354. y10 = y11; y11 = -d+a;
  355. y9 = -desc_depth;
  356. draw_circle;
  357. draw z10--z11; draw z4--z9;
  358. math_fit(0,ic#);
  359. labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
  360.  
  361. cmchar "earth";
  362. beginchar(hex"26",x_height#+2u#,1.7x_height#,0);
  363. italcorr 1/2x_height#*slant;
  364. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  365. pickup rule.nib; autorounded;
  366. lft x6=hround u; x8=good.x (.5x_height + u);
  367. y6 = good.y .5x_height; y8-y4=x2-x6;
  368. circle_points;
  369. x9 := x8;
  370. numeric a; a = round .5(h-x_height) + eps;
  371. x10=x8-a;
  372. x11=x8+a;
  373. y10 = y11 = h-a;
  374. y9 = h;
  375. draw_circle;
  376. draw z10--z11; draw z8--z9;
  377. math_fit(0,ic#);
  378. labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
  379.  
  380. cmchar "Uranus";
  381. beginchar(hex"5A",x_height#+2u#,v_center(1.7x_height#));
  382. italcorr 1/2x_height#*slant;
  383. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  384. pickup rule.nib; autorounded;
  385. lft x6=hround u; x12 = x8 = good.x (.5x_height + u);
  386. y12 = y6 = good.y (.5x_height-d); y8-y4=x2-x6;
  387. circle_points;
  388. x9 := x8;
  389. numeric a; a = round .5(h+d-x_height) + eps;
  390. x10=x8-a+.5u;
  391. x11=x8+a-.5u;
  392. y10 = y11 = h-a+.5u;
  393. y9 = h;
  394. draw_circle;
  395. draw z8--z9;
  396. draw z10--z9--z11;
  397. drawdot z12;
  398. math_fit(0,ic#);
  399. labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  400.  
  401. cmchar "Neptun";
  402. beginchar(hex"5B",x_height#+4u#,v_center(2x_height#));
  403. italcorr 2x_height#*slant - .5u#;
  404. adjust_fit(0,0);
  405. pickup rule.nib; autorounded;
  406. lft x6=hround u; x8 = good.x (.5x_height + u);
  407. y6 = good.y (.5x_height-d); y8-y4=x2-x6;
  408. circle_points;
  409. x9 = x11 = x11' = x8;
  410. x10=x10'=x6; x12=x12'=x2;
  411. top y10' = top y11' = top y12' = h;
  412. top y10 = top y11 = top y12 = h-u;
  413. y10-y9 = x9-x10;
  414. pos10(2u,0);
  415. pos11(2u,0);
  416. pos12(2u,0);
  417. draw_circle;
  418. draw z8--z11';
  419. draw z10'---z10..z9..z12---z12';
  420. draw z10l--z10'--z10r;
  421. draw z11l--z11'--z11r;
  422. draw z12l--z12'--z12r;
  423. math_fit(0,ic#);
  424. penlabels(10,11,12);
  425. labels(1,2,3,4,5,6,7,8,9,10',11',12'); endchar;
  426.  
  427. cmchar "Mercury";
  428. beginchar(hex"27",x_height#+2u#,2.2x_height#-desc_depth#,desc_depth#);
  429. italcorr 1/2x_height#*slant;
  430. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  431. pickup rule.nib; autorounded;
  432. lft x6=hround u; x8=good.x (.5x_height + u);
  433. y6 = good.y (h-x_height); y8-y4=x2-x6;
  434. circle_points;
  435. x9 := x8;
  436. numeric a; a = round .5(h+d-1.5x_height) + eps;
  437. x10=x8-a;
  438. x11=x8+a;
  439. y10 = y11; y11 = -d+a;
  440. y9 = -desc_depth;
  441. x12=x6; x13=x2; y12=y13; y12-y8=y8-y2;
  442. draw_circle;
  443. draw z10--z11; draw z4--z9;
  444. draw z12{down}...z8{right}...{up}z13;
  445. math_fit(0,ic#);
  446. labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
  447.  
  448. cmchar "male";
  449. numeric this_size#;
  450. this_size# = x_height#*(1+0.9/sqrt2);
  451. beginchar(hex"1A",this_size#+1.7u#,this_size#,0);
  452. italcorr this_size#*slant;
  453. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  454. pickup rule.nib; autorounded;
  455. lft x6=hround u; x2=x_height+2u-x6; y2=.5x_height; bot y4=0;
  456. circle_points;
  457. z9 = 1.9[z5,z1];
  458. draw_circle;
  459. x9 := good.x x9;
  460. y9 := good.y y9;
  461. x10 = x9;    y11 = y9;
  462. y10 = y9-3.5u; x11 = x9-3.5u;
  463. draw z1--z9;
  464. draw z10--z9--z11;
  465. labels(1,2,3,4,5,6,7,8,9); endchar;
  466.  
  467. cmchar "sagittarius";
  468. numeric this_size#;
  469. this_size# = x_height#*(1+0.9/sqrt2);
  470. beginchar(hex"63",this_size#,this_size#,0);
  471. italcorr this_size#*slant;
  472. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  473. pickup rule.nib; autorounded;
  474. lft x7=hround u; x2-x6 = y8-y4 = x_height; bot y5=0;
  475. circle_points;
  476. z9 = 1.9[z5,z1];
  477. x9 := good.x x9;
  478. y9 := good.y y9;
  479. x10 = x9;    y11 = y9;
  480. y10 = y9-3.5u; x11 = x9-3.5u;
  481. draw z5--z9;
  482. draw z3--z7;
  483. draw z10--z9--z11;
  484. labels(1,2,3,4,5,6,7,8,9); endchar;
  485.  
  486. cmchar "conjunction";
  487. numeric this_size#;
  488. this_size# = x_height#*(1+0.9/sqrt2);
  489. beginchar(hex"56",this_size#+1.7u#,this_size#,0);
  490. italcorr this_size#*slant;
  491. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  492. pickup rule.nib; autorounded;
  493. lft x6=hround u; x2=x_height+2u-x6; y2=.5x_height; bot y4=0;
  494. circle_points;
  495. z9 = 1.9[z5,z1];
  496. draw_circle;
  497. x9 := good.x x9;
  498. y9 := good.y y9;
  499. draw z1--z9;
  500. labels(1,2,3,4,5,6,7,8,9); endchar;
  501.  
  502. cmchar "opposition";
  503. beginchar(hex"57",2x_height#+2u#,
  504.      2.2x_height#-0.5desc_depth#,0.5desc_depth#);
  505. italcorr 1.5x_height#*slant;
  506. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  507. pickup rule.nib; autorounded;
  508. lft x6=hround u; x2-x6=y8-y4=x_height; bot y4=-d-oo;
  509. circle_points;
  510. draw_circle;
  511. x10 = w-u-x2; y10=h+oo-y8;
  512. for n=1 upto 8: z[n]' = z[n] + z10; endfor
  513. draw z8'{right}...z1'{z2-z8}...z2'{down}...z3'{z4-z2}...z4'{left}
  514.   ...z5'{z6-z4}...z6'{up}...z7'{z8-z6}...cycle;
  515. draw z1--z5';
  516. labels(1',2',3',4',5',6',7',8');
  517. labels(1,2,3,4,5,6,7,8); endchar;
  518.  
  519. cmchar "automatic telephone recorder";
  520. beginchar(hex"06",
  521.  1.13 min(asc_height#,9/7x_height#)+2u#,
  522.  min(asc_height#,9/7x_height#),0);
  523. italcorr x_height#*slant;
  524. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  525. pickup rule.nib; autorounded;
  526. x4 = good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=-oo;
  527. circle_points;
  528. z9  = 1.30[z1,z5];
  529. z10 = 0.70[z1,z5];
  530. draw_circle;
  531. draw z9--z10;
  532. labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  533.  
  534. cmchar "currency";
  535. beginchar(hex"1B",
  536.  1.13 min(asc_height#,9/7x_height#)+2u#,
  537.  min(asc_height#,9/7x_height#),0);
  538. italcorr x_height#*slant;
  539. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  540. pickup rule.nib; autorounded;
  541. x4 = good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=-oo;
  542. circle_points;
  543. z9 = 1.30[z5,z1];
  544. z10 = 1.30[z7,z3];
  545. z11 = 1.30[z1,z5];
  546. z12 = 1.30[z3,z7];
  547. draw_circle;
  548. draw z1--z9;
  549. draw z3--z10;
  550. draw z5--z11;
  551. draw z7--z12;
  552. labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  553.  
  554. cmchar "clock";
  555. beginchar(hex"1C",asc_height#+2u#,0.95asc_height#,0);
  556. italcorr x_height#*slant;
  557. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  558. pickup rule.nib; autorounded;
  559. x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0;
  560. circle_points;
  561. draw_circle;
  562. z9 = 0.55[z5,z1];
  563. z10 = 0.55[z7,z3];
  564. z11 = 0.55[z1,z5];
  565. z12 = 0.55[z3,z7];
  566. z13 = 0.5[z2,z6];
  567. z14 = 0.25[z2,z6];
  568. z15 = 0.15[z8,z4];
  569. filldraw z9..z10..z11..z12..cycle;
  570. draw z14--z13--z15;
  571. labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); endchar;
  572.  
  573. cmchar "smiley";
  574. beginchar(hex"2C",asc_height#+2u#,0.95asc_height#,0);
  575. italcorr x_height#*slant;
  576. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  577. pickup rule.nib; autorounded;
  578. x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0;
  579. circle_points;
  580. draw_circle;          % circle
  581. pickup crisp.nib;
  582. numeric ethickness;
  583. numeric mthickness;
  584. ethickness = min(1.2stem,max(1,round(h/4)-1));
  585. mthickness = min(stem,max(1,round(h/11)));
  586. z7' = .27[z7,z3]; pos7'(ethickness,45); z17 = z7'; pos17(ethickness,-45);
  587. z1' = .27[z1,z5]; pos1'(ethickness,45); z11 = z1'; pos11(ethickness,-45);
  588. x3' = .23[x3,x7];
  589. y3' = .28[y3,y7]; pos3'(hair,135);
  590. x5' = .23[x5,x1];
  591. y5' = .28[y5,y1]; pos5'(hair,45);
  592. z4' = .25[z4,z8]; pos4'(mthickness,90);
  593. filldraw stroke z5'e...z4'e{right}...z3'e; % mouth
  594. filldraw z7'r...z17l...z7'l...z17r...cycle;      % eyes
  595. filldraw z1'r...z11l...z1'l...z11r...cycle;
  596. penlabels(1',11,3',4',5',7',17);
  597. labels(1,2,3,4,5,6,7,8); endchar;
  598.  
  599. cmchar "frowney";
  600. beginchar(hex"2F",asc_height#+2u#,0.95asc_height#,0);
  601. italcorr x_height#*slant;
  602. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  603. pickup rule.nib; autorounded;
  604. x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0;
  605. circle_points;
  606. draw_circle;          % circle
  607. pickup crisp.nib;
  608. numeric ethickness;
  609. numeric mthickness;
  610. ethickness = min(1.2stem,max(1,round(h/4)-1));
  611. mthickness = min(stem,max(1,round(h/11)));
  612. z7' = .27[z7,z3]; pos7'(ethickness,45); z17 = z7'; pos17(ethickness,-45);
  613. z1' = .27[z1,z5]; pos1'(ethickness,45); z11 = z1'; pos11(ethickness,-45);
  614. x3' = .25[x3,x7];
  615. y3' = .15[y3,y7]; pos3'(hair,45);
  616. x5' = .25[x5,x1];
  617. y5' = .15[y5,y1]; pos5'(hair,135);
  618. z4' = .35[z4,z8]; pos4'(mthickness,90);
  619. filldraw stroke z5'e...z4'e{right}...z3'e; % mouth
  620. filldraw z7'r...z17l...z7'l...z17r...cycle;      % eyes
  621. filldraw z1'r...z11l...z1'l...z11r...cycle;
  622. penlabels(1',11,3',4',5',7',17);
  623. labels(1,2,3,4,5,6,7,8); endchar;
  624.  
  625. cmchar "black smiley";
  626. beginchar(hex"2D",asc_height#+2u#,0.95asc_height#,0);
  627. italcorr x_height#*slant;
  628. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  629. pickup crisp.nib; autorounded;
  630. x8=good.x .5w; x2-x6=y8-y4; y2=good.y .5h; bot y4=0;
  631. circle_points;
  632. numeric ethickness;
  633. numeric mthickness;
  634. ethickness = min(1.2stem,max(1,round(h/4)-1))+1;
  635. mthickness = min(stem,max(1,round(h/11)))+1;
  636. z7' = .27[z7,z3]; pos7'(ethickness,45); z17 = z7'; pos17(ethickness,-45);
  637. z1' = .27[z1,z5]; pos1'(ethickness,45); z11 = z1'; pos11(ethickness,-45);
  638. z3' = .25[z3,z7]; pos3'(1.5hair,135);
  639. z5' = .25[z5,z1]; pos5'(1.5hair,45);
  640. z4' = .25[z4,z8]; pos4'(mthickness,90);
  641. filldraw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
  642.   ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle;
  643. unfilldraw stroke z5'e...z4'e{right}...z3'e; % mouth
  644. unfilldraw z7'r...z17l...z7'l...z17r...cycle;      % eyes
  645. unfilldraw z1'r...z11l...z1'l...z11r...cycle;
  646. penlabels(1',11,3',4',5',7',17);
  647. labels(1,2,3,4,5,6,7,8); endchar;
  648.  
  649. cmchar "varprop";
  650. beginchar(hex"1D",14u#,x_height#,0);
  651. italcorr x_height#*slant-.5u#;
  652. adjust_fit(if monospace: -u#,-u# else: 0,0 fi);
  653. pickup light_rule.nib;
  654. lft x1 = hround 1.5u; y1 := good.y math_axis;
  655. numeric a; a = round(2.75u);
  656. x2 := good.x .5(w+a);
  657. y2 = y1;
  658. x3 = x4 = x1+a; y3 = y1 + a;  y4 = y1 - a;
  659. x5 = x6 = w-x1; y5 = y3;      y6 = y4;
  660. draw z5{left}..z2..z4..z1..z3..z2..{right}z6;
  661. labels(1,2,3,4,5,6); endchar;
  662.  
  663. cmchar "variant angle";
  664. compute_spread(.45x_height#,.55x_height#);
  665. spread#':=spread#; spread':=spread; % the spread of `$=$'
  666. compute_spread(5/4x_height#,3/2x_height#);
  667. beginchar(hex"1E",14u#,v_center(spread#'+spread#+rule_thickness#));
  668. italcorr h#*slant-u#;
  669. adjust_fit(0,0);
  670. lft x10=hround 1.5u-eps; x9=x11=w-x10;
  671. y9-y11=spread; y10=.5[y9,y11]=math_axis;
  672. x4 = x10;  x6 = 0.7[x10,x11];  y6 = y10;  x6 - x1 = y4 - y1;
  673. pickup rule.nib; autorounded;
  674. circle_points;
  675. draw z5{z6-z4}..z6..{z8-z6}z7;
  676. pickup light_rule.nib;
  677. draw z9--z10--z11;
  678. labels(1,2,3,4,5,6,7,8,9,10,11); endchar;
  679.  
  680. cmchar "reverse diameter";
  681. beginchar(hex"15",1.5556x_height#+2u#,v_center(1.5556x_height#));
  682. italcorr 1.348x_height#*slant;
  683. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  684. pickup rule.nib; autorounded;
  685. numeric diam; diam := max(round(x_height/rule_thickness),1);
  686. diam := round( diam*rule_thickness ); if odd diam: diam := diam + 1; fi
  687. x0=x8=good.x .5w; y8-y4=x2-x6=diam;
  688. y0=y2=good.y math_axis;
  689. circle_points;
  690. z9' = 2.2[z0,z7];
  691. numeric delta; delta = round(y9'-y8);
  692. lft x9 = x6-delta+eps;
  693. top y9 = y8+delta+eps;
  694. rt x10 = x2+delta+eps;
  695. bot y10 = y4-delta+eps;
  696. draw_circle;
  697. draw z9--z10;
  698. labels(0,1,2,3,4,5,6,7,8,9,10); endchar;
  699.  
  700. cmchar "diameter";
  701. beginchar(hex"1F",1.5556x_height#+2u#,v_center(1.5556x_height#));
  702. italcorr 1.348x_height#*slant;
  703. adjust_fit(if monospace: u#,u# else: 0,0 fi);
  704. pickup rule.nib; autorounded;
  705. numeric diam; diam := max(round(x_height/rule_thickness),1);
  706. diam := round( diam*rule_thickness ); if odd diam: diam := diam + 1; fi
  707. x0=x8=good.x .5w; y8-y4=x2-x6=diam;
  708. y0=y2=good.y math_axis;
  709. circle_points;
  710. z9' = 2.2[z0,z7];
  711. numeric delta; delta = round(y9'-y8);
  712. lft x9 = x6-delta+eps;
  713. bot y9 = y4-delta+eps;
  714. rt x10 = x2+delta+eps;
  715. top y10 = y8+delta+eps;
  716. draw_circle;
  717. draw z9--z10;
  718. labels(1,2,3,4,5,6,7,8,9,10); endchar;
  719.  
  720. cmchar "rightcycle";
  721. compute_spread(.45x_height#,.55x_height#);
  722. beginchar(hex"21",
  723.           18u#,asc_height#,desc_depth#);
  724. adjust_fit(if monospace:-2u#,-2u# else: 0,0 fi);
  725. italcorr x_height#*slant;
  726. pickup light_rule.nib; autorounded;
  727. numeric a; a = h + d + 2o - (spread+rule_thickness);
  728. x4 = good.x .5w; x2-x6=a; y8-y4=a;
  729. top y8=asc_height+o-.5(spread+rule_thickness);
  730. circle_points;
  731. y10=y8-eps; rt x10=hround .4[x8,x1];
  732. draw z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
  733.   ...z5{z6-z4}...z6{up}...z7{z8-z6}...{right}z8;
  734. pickup crisp.nib;
  735. pos13(bar,0); pos14(bar,0);
  736. y13-y10=y10-y14=.24asc_height+eps; x13=x14=x10-3u-eps;
  737. pos15(bar,angle(z14-z10)); z15l=z10; pos16(bar,angle(z13-z10)); z16l=z10;
  738. z19=.381966[.5[z13,z14],z10];
  739. numeric t[]; path p[];
  740. (t1,t2)=(z14l{z19-z14}..z16r) intersectiontimes (z13l{z19-z13}..z15r);
  741. z20=(z14l{z19-z14}..z16r) intersectionpoint (z13l{z19-z13}..z15r);
  742. filldraw z10..{z14-z19}z14r--subpath (0,t1) of (z14l{z19-z14}..z16r)
  743.  --z20--subpath (t2,0) of (z13l{z19-z13}..z15r)--z13r{z19-z13}..z10
  744.  & cycle;  % arrowhead
  745. penlabels(10,13,14,15,16,19,20);
  746. labels(1,2,3,4,5,6,7,8); endchar;
  747.  
  748. cmchar "leftcycle";
  749. compute_spread(.45x_height#,.55x_height#);
  750. beginchar(hex"22",
  751.           18u#,asc_height#,desc_depth#);
  752. adjust_fit(if monospace:-2u#,-2u# else: 0,0 fi);
  753. italcorr x_height#*slant;
  754. pickup light_rule.nib; autorounded;
  755. numeric a; a = h + d + 2o - (spread+rule_thickness);
  756. x4 = good.x .5w; x2-x6=a; y8-y4=a;
  757. top y8=asc_height+o-.5(spread+rule_thickness);
  758. circle_points;
  759. y10=y8-eps; lft x10=hround .4[x8,x7];
  760. draw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
  761.   ...z5{z6-z4}...z6{up}...{z8-z6}z7;
  762. pickup crisp.nib;
  763. pos13(bar,180); pos14(bar,180);
  764. y13-y10=y10-y14=.24asc_height+eps; x13=x14=x10+3u+eps;
  765. pos15(bar,angle(z14-z10)); z15l=z10; pos16(bar,angle(z13-z10)); z16l=z10;
  766. z19=.381966[.5[z13,z14],z10];
  767. numeric t[]; path p[];
  768. (t1,t2)=(z14l{z19-z14}..z16r) intersectiontimes (z13l{z19-z13}..z15r);
  769. z20=(z14l{z19-z14}..z16r) intersectionpoint (z13l{z19-z13}..z15r);
  770. filldraw z10..{z14-z19}z14r--subpath (0,t1) of (z14l{z19-z14}..z16r)
  771.  --z20--subpath (t2,0) of (z13l{z19-z13}..z15r)--z13r{z19-z13}..z10
  772.  & cycle;  % arrowhead
  773. penlabels(10,13,14,15,16,19,20);
  774. labels(1,2,3,4,5,6,7,8); endchar;
  775.  
  776. cmchar "ocircle same size as operators";
  777. beginarithchar(hex"23"); pickup light_rule.nib; autorounded;
  778. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  779. circle_points; draw_circle;  % circle
  780. labels(1,2,3,4,5,6,7,8); endchar;
  781.  
  782. cmchar "pentagon";
  783. beginarithchar(hex"44"); pickup rule.nib;
  784. x0=good.x .5w; y0=good.y math_axis;
  785. x8=x0;         top y8=h;
  786. numeric theta; theta=360/5; % degrees between points
  787. z0=.5[z4,z8]; z9-z0=(z8-z0) rotated theta;
  788. z10-z0=(z9-z0) rotated theta;
  789. z12-z0=(z8-z0) rotated (-theta);
  790. z11-z0=(z12-z0) rotated (-theta);
  791. draw z8--z9--z10--z11--z12--cycle;
  792. labels(0,8,9,10,11,12); endchar;
  793.  
  794. cmchar "ostar five-ended star in circle";
  795. beginarithchar(hex"16"); pickup light_rule.nib; autorounded;
  796. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  797. circle_points; draw_circle;  % circle
  798. numeric theta; theta=360/5; % degrees between points
  799. z0=.5[z4,z8]; z9-z0=(z8-z0) rotated theta;
  800. z10-z0=(z9-z0) rotated theta;
  801. z11-z0=(z8-z0) rotated (-theta);
  802. z12-z0=(z11-z0) rotated (-theta);
  803. draw z0--z8; draw z0--z9;
  804. draw z0--z10; draw z0--z11;
  805. draw z0--z12;
  806. labels(0,1,2,3,4,5,6,7,8,9,10,11,12); endchar;
  807.  
  808. cmchar "pentastar";
  809. beginarithchar(hex"45"); pickup light_rule.nib; autorounded;
  810. top y8=h; x0=x8=good.x .5w;
  811. numeric theta; theta=360/5; % degrees between points
  812. y0=.5h; z9-z0=(z8-z0) rotated theta;
  813. z10-z0=(z9-z0) rotated theta;
  814. z11-z0=(z8-z0) rotated (-theta);
  815. z12-z0=(z11-z0) rotated (-theta);
  816. draw z0--z8; draw z0--z9;
  817. draw z0--z10; draw z0--z11;
  818. draw z0--z12;
  819. labels(0,8,9,10,11,12); endchar;
  820.  
  821. cmchar "Filled ocircle";
  822. beginarithchar(hex"20"); pickup crisp.nib; autorounded;
  823. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  824. circle_points;
  825. filldraw z8{right}...z1{z2-z8}...z2{down}...z3{z4-z2}...z4{left}
  826.   ...z5{z6-z4}...z6{up}...z7{z8-z6}...cycle;
  827. labels(1,2,3,4,5,6,7,8); endchar;
  828.  
  829. cmchar "Filled left half ocircle";
  830. beginarithchar(hex"47"); pickup crisp.nib; autorounded;
  831. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  832. circle_points;
  833. filldraw z8---z4{left}...z5{z6-z4}...z6{up}...z7{z8-z6}...{right}cycle;
  834. labels(1,2,3,4,5,6,7,8); endchar;
  835.  
  836. cmchar "Filled right half ocircle";
  837. beginarithchar(hex"48"); pickup crisp.nib; autorounded;
  838. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  839. circle_points;
  840. filldraw z8---z4{right}...z3{z2-z4}...z2{up}...z1{z8-z2}...{left}cycle;
  841. labels(1,2,3,4,5,6,7,8); endchar;
  842.  
  843. cmchar "Left half ocircle";
  844. beginarithchar(hex"49"); pickup light_rule.nib; autorounded;
  845. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  846. circle_points;
  847. draw z8---z4{left}...z5{z6-z4}...z6{up}...z7{z8-z6}...{right}cycle;
  848. labels(1,2,3,4,5,6,7,8); endchar;
  849.  
  850. cmchar "Right half ocircle";
  851. beginarithchar(hex"4A"); pickup light_rule.nib; autorounded;
  852. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  853. circle_points;
  854. draw z8---z4{right}...z3{z2-z4}...z2{up}...z1{z8-z2}...{left}cycle;
  855. labels(1,2,3,4,5,6,7,8); endchar;
  856.  
  857. cmchar "Open moon";
  858. beginarithchar(hex"24"); pickup rule.nib; autorounded;
  859. lft x6=hround u; x2=w-x6; y2=math_axis; top y8=h;
  860. circle_points;
  861. z9=1/3[z6,z2];
  862. x8:=x8+u;
  863. x4:=x8;
  864. draw z4{(-1,-0.1)}..z5{z6-z4}..z6{up}..z7{z8-z6}..{(1,-0.1)}z8
  865.    & z8..z9{down}..z4;
  866. labels(1,2,3,4,5,6,7,8,9); endchar;
  867.  
  868. cmchar "Close moon";
  869. beginarithchar(hex"25"); pickup rule.nib; autorounded;
  870. lft x2=hround u; x6=w-x2; y2=math_axis; top y8=h;
  871. circle_points;
  872. z9=1/3[z6,z2];
  873. x8:=x8-u;
  874. x4:=x8;
  875. draw z4{(1,-0.1)}..z5{z6-z4}..z6{up}..z7{z8-z6}..{(-1,-0.1)}z8
  876.    & z8..z9{down}..z4;
  877. labels(1,2,3,4,5,6,7,8,9); endchar;
  878.  
  879. cmchar "Jupiter";
  880. beginchar(hex"58",.7cap_height#+4u#,cap_height#,0);
  881. pickup rule.nib;
  882. lft x1 = hround u; x3-x2=y4-y5; y2=good.y .35h; bot y5=0;
  883. x4=x5=.505[x2,x3]; y2=y3=.5[y4,y5];
  884. x1=x2-2u; bot y1=top y4;
  885. top y1'=h; x1'=.35[x1,x4];
  886. draw z1..z1'{right}..{(-1,-2)}z2--z3;
  887. draw z4--z5;
  888. labels(1,2,3,4,5); endchar;
  889.  
  890. cmchar "Saturn";
  891. beginchar(hex"59",10.5u#,cap_height#,desc_depth#);
  892. pickup rule.nib;
  893. lft x1 = hround 2.5u; rt x5 = w-u; x6=x5; x4=.5[x1,x5]; x2=x3=x1;
  894. bot y1=0; top y2=h; y4=x_height; y3=y5=.51x_height; bot y6=-d;
  895. y7=y8=h-2.0u; lft x7=x1-2.0u; rt x8=x1+2.0u;
  896. draw z1--z2;
  897. draw z3{up}...z4{right}..z5{down}..{right}z6;
  898. draw z7--z8;
  899. labels(1,2,3,4,5,6,7,8); endchar;
  900.  
  901. cmchar "Pluto";
  902. beginchar(hex"5C",10.5u#,cap_height#,0);
  903. pickup rule.nib; autorounded;
  904. lft x2 = hround u; x3=x5=x2; x1=x4=w-x2;
  905. bot y2 = 0; y1=y2; top y3=h; y5=good.y .45[y2,y3]; y4=.5[y3,y5];
  906. draw z1--z2--z3{right}...z4...{left}z5;
  907. labels(1,2,3,4,5); endchar;
  908.  
  909. cmchar "Ascendent";
  910. beginchar(hex"13",15u#,v_center(0.9(asc_height#+desc_depth#)));
  911. italcorr 0.8asc_height#*slant;
  912. adjust_fit(0,0); pickup rule.nib;
  913. y1=y3=y8=y10=1/7(h+d)-d;
  914. y4=y9=-d;
  915. y5=y7=0.7(h+d)-d;
  916. y6=h;
  917. y1=.5[y2,y4];
  918. x3=u; x5=2u;
  919. x10=w-u; x7=w-2u;
  920. x6=.5w;
  921. x10-x8=x1-x3=y2-y4;
  922. x2=x4=.5[x1,x3];
  923. x9=.5[x8,x10];
  924. draw z1{up}...z2{left}...z3{down}...z4{right}...z1{up}...z5{up}
  925.      ...z6{right}...z7{down}...z8{down}...z9{right}...{up}z10;
  926. labels(1,2,3,4,5,6,7,8,9,10); endchar;
  927.  
  928. cmchar "Descendent";
  929. beginchar(hex"14",15u#,v_center(0.9(asc_height#+desc_depth#)));
  930. italcorr 0.8asc_height#*slant;
  931. adjust_fit(0,0); pickup rule.nib;
  932. y1=y3=y8=y10=6/7(h+d)-d;
  933. y4=y9=h;
  934. y5=y7=0.3(h+d)-d;
  935. y6=-d;
  936. y1=.5[y2,y4];
  937. x3=u; x5=2u;
  938. x10=w-u; x7=w-2u;
  939. x6=.5w;
  940. x10-x8=x1-x3=y4-y2;
  941. x2=x4=.5[x1,x3];
  942. x9=.5[x8,x10];
  943. draw z1{down}...z2{left}...z3{up}...z4{right}...z1{down}...z5{down}
  944.      ...z6{right}...z7{up}...z8{up}...z9{right}...{down}z10;
  945. labels(1,2,3,4,5,6,7,8,9,10); endchar;
  946.  
  947. cmchar "Square";
  948. beginchar(hex"32",2.1math_axis#+4u#,
  949.           v_center(2.1math_axis#));
  950. italcorr math_axis#*slant;
  951. adjust_fit(0,0); pickup rule.nib;
  952. numeric a; a=round(2.1math_axis);
  953. if odd a: a := a + 1; fi
  954. x1=x4; x2=x3=x1+a; x5 = .5[x1,x2] = good.x .5w;
  955. y3=y4; y1=y2=y3+a;
  956. y5 = .5[y1,y3] = good.y .5(h-d);
  957. draw z1--z2--z3--z4--cycle;
  958. labels(1,2,3,4,5); endchar;
  959.  
  960. cmchar "sharp triangle, delta form";
  961. beginchar(hex"00",12u#,asc_height#,0);
  962. italcorr asc_height#*slant;
  963. adjust_fit(0,0); pickup rule.nib;
  964. lft x1=hround u; x3=w-x1; x2=.5[x1,x3];
  965. y1=y3; bot y1=-oo; top y2=h;
  966. draw z1--z2--z3--cycle;
  967. labels(1,2,3,4,5); endchar;
  968.  
  969. cmchar "sharp triangle, nabla form";
  970. beginchar(hex"46",12u#,asc_height#,0);
  971. italcorr asc_height#*slant;
  972. adjust_fit(0,0); pickup rule.nib;
  973. lft x1=hround u; x3=w-x1; x2=.5[x1,x3];
  974. y1=y3; top y3=h; bot y2=-oo;
  975. draw z1--z2--z3--cycle;
  976. labels(1,2,3,4,5); endchar;
  977.  
  978. cmchar "Crossedsquare";
  979. beginchar(hex"34",2.1math_axis#+4u#,
  980.           v_center(2.1math_axis#));
  981. italcorr math_axis#*slant;
  982. adjust_fit(0,0); pickup rule.nib;
  983. numeric a; a=round(2.1math_axis);
  984. if odd a: a := a + 1; fi
  985. x1=x4; x2=x3=x1+a; x5 = .5[x1,x2] = good.x .5w;
  986. y3=y4; y1=y2=y3+a;
  987. y5 = .5[y1,y3] = good.y .5(h-d);
  988. draw z1--z2--z3--z4--cycle;
  989. draw z1--z3;
  990. draw z2--z4;
  991. labels(1,2,3,4,5); endchar;
  992.  
  993. cmchar "Lozenge";
  994. beginchar(hex"35",2.1math_axis#+4u#,
  995.           v_center(2.1math_axis#));
  996. italcorr math_axis#*slant;
  997. adjust_fit(0,0); pickup rule.nib;
  998. numeric a; a=round(2.1math_axis);
  999. x1=x4; x2=x3=x1+a; .5(x1+x2) = good.x .5w;
  1000. y3=y4; y1=y2=y3+a;
  1001. y5 = good.y .5(h-d);
  1002. z5=.5[z1,z3];
  1003. x13-x5=x5-x11=1/3a;  y13=y11=y5;
  1004. y12-y5=y5-y14=1/3a;  x12=x14=x5;
  1005. draw z1...z12...z2
  1006.    & z2...z13...z3
  1007.    & z3...z14...z4
  1008.    & z4...z11...z1 & cycle;
  1009. labels(1,2,3,4,5,11,12,13,14); endchar;
  1010.  
  1011. cmchar "Kreuz";
  1012. beginchar(hex"36",2.1math_axis#+4u#,
  1013.           v_center(2.1math_axis#));
  1014. italcorr math_axis#*slant;
  1015. adjust_fit(0,0); pickup crisp.nib;
  1016. numeric a; a=round(2.1math_axis)+eps;
  1017. numeric outerthickness; outerthickness=round(math_axis);
  1018. numeric innerthickness; innerthickness=stem;
  1019. x1=x4; x2=x3=x1+a; .5(x1+x2) = good.x .5w;
  1020. y3=y4; y1=y2=y3+a;
  1021. y5 = good.y .5(h-d);
  1022. z5=.5[z1,z3];
  1023. lft x10=x1; x11=x5; rt x12=x2; y10=y11=y12=y5;
  1024. pos10(outerthickness,90);
  1025. pos11(innerthickness,90);
  1026. pos12(outerthickness,90);
  1027. filldraw stroke z10e...z11e...z12e;
  1028. bot y13=y1; y14=y5; top y15=y4; x13=x14=x15=x5;
  1029. pos13(outerthickness,0);
  1030. pos14(innerthickness,0);
  1031. pos15(outerthickness,0);
  1032. filldraw stroke z13e...z14e...z15e;
  1033. labels(1,2,3,4,5);
  1034. penlabels(10,11,12,13,14,15); endchar;
  1035.  
  1036. cmchar "Very high frequency";
  1037. compute_spread(.45x_height#,.55x_height#);
  1038. beginchar(hex"40",14u#,v_center(1.9math_axis#+rule_thickness#));
  1039. adjust_fit(0,0); pickup rule.nib;
  1040. numeric a; a=round(.45math_axis);
  1041. numeric b; b=round(math_axis+rule_thickness);
  1042. if odd b: b := b+1; fi
  1043. y11=y13=y15=math_axis; y12-a=y14+a=good.y math_axis;
  1044. x11=u; x15=w-u; x13=.5[x11,x15]; x12=.5[x11,x13]; x14=.5[x13,x15];
  1045. path p; p=z12{right}...z13...z14{right};
  1046. pos11(b,90);
  1047. pos12(b,90);
  1048. pos13(b,90);
  1049. pos14(b,90);
  1050. pos15(b,90);
  1051. draw z11{dir(-angle direction 1 of p)}...z12{right}...z13...
  1052.      z14{right}...z15{dir(-angle direction 1 of p)};
  1053. draw z11r{dir(-angle direction 1 of p)}...z12r{right}...z13r...
  1054.      z14r{right}...z15r{dir(-angle direction 1 of p)};
  1055. draw z11l{dir(-angle direction 1 of p)}...z12l{right}...z13l...
  1056.      z14l{right}...z15l{dir(-angle direction 1 of p)};
  1057. penlabels(11,12,13,14,15); endchar;
  1058.  
  1059. cmchar "APL comment";
  1060. beginchar(hex"7F",9u#,9u#,0);
  1061. adjust_fit(0,0); pickup rule.nib; autorounded;
  1062. lft x6=hround u; x2=w-x6; top y8=h; bot y4=2u;
  1063. circle_points;
  1064. y9 = y10 = 0; x9=x2; x10=x6;
  1065. draw_circle;  % circle
  1066. draw z2--z9; draw z6--z10;
  1067. labels(1,2,3,4,5,6,7,8,9,10); endchar;
  1068.  
  1069. cmchar "APLleftarrowbox";
  1070. compute_spread(.45x_height#,.55x_height#);
  1071. beginchar(hex"70",14u#,7u#+math_axis#,7u#-math_axis#);
  1072. italcorr math_axis#*slant-.5u#;
  1073. adjust_fit(0,0); pickup crisp.nib;
  1074. pos1(rule_thickness,90); pos2(rule_thickness,90);
  1075. pos3(bar,0); pos4(bar,0);
  1076. y0=y1=y2=math_axis; x1+rule_thickness=hround(w-1.5u);
  1077. lft x0=hround 1.5u;
  1078. y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0+3u+eps;
  1079. pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
  1080. z9=.381966[.5[z3,z4],z0];
  1081. numeric t; path p; p=z4r{z9-z4}..z6r;
  1082. t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
  1083. filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
  1084.  --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3r{z9-z3}..z5r)
  1085.  --z3l{z9-z3}..z0 & cycle;  % arrowhead and stem
  1086. penlabels(0,1,2,3,4,5,6,9);
  1087. pickup rule.nib;
  1088. y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]
  1089. +.5dot_size);
  1090. lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11;
  1091. y11=y12=math_axis-1.8(y-math_axis);
  1092. y11'=y12'=math_axis+1.8(y-math_axis);
  1093. draw z11--z12--z12'--z11'--cycle;
  1094. penlabels(11,12,11',12'); endchar;
  1095.  
  1096. cmchar "APLrightarrowbox";
  1097. compute_spread(.45x_height#,.55x_height#);
  1098. beginchar(hex"71",14u#,7u#+math_axis#,7u#-math_axis#);
  1099. italcorr math_axis#*slant-.5u#;
  1100. adjust_fit(0,0); pickup crisp.nib;
  1101. pos1(rule_thickness,90); pos2(rule_thickness,90);
  1102. pos3(bar,0); pos4(bar,0);
  1103. y0=y1=y2=math_axis; x1-rule_thickness=hround 1.5u;
  1104. rt x0=hround(w-1.5u);
  1105. y3-y0=y0-y4=.24asc_height+eps; x3=x4=x0-3u-eps;
  1106. pos5(bar,angle(z4-z0)); z5l=z0; pos6(bar,angle(z3-z0)); z6l=z0;
  1107. z9=.381966[.5[z3,z4],z0];
  1108. numeric t; path p; p=z4l{z9-z4}..z6r;
  1109. t=xpart(p intersectiontimes((0,y2l)--(w,y2l))); x2=xpart point t of p;
  1110. filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
  1111.  --z2l---z1l..z1r---z2r--subpath (t,0) of\\(z3l{z9-z3}..z5r)
  1112.  --z3r{z9-z3}..z0 & cycle;  % arrowhead and stem
  1113. penlabels(0,1,2,3,4,5,6,9);
  1114. pickup rule.nib;
  1115. y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]
  1116. +.5dot_size);
  1117. lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11;
  1118. y11=y12=math_axis-1.8(y-math_axis);
  1119. y11'=y12'=math_axis+1.8(y-math_axis);
  1120. draw z11--z12--z12'--z11'--cycle;
  1121. penlabels(11,12,11',12'); endchar;
  1122.  
  1123. cmchar "APLuparrowbox";
  1124. beginchar(hex"6E",14u#,7u#+math_axis#,7u#-math_axis#);
  1125. italcorr math_axis#*slant-.5u#;
  1126. adjust_fit(0,0); pickup crisp.nib;
  1127. pos1(rule_thickness,0); pos2(rule_thickness,0);
  1128. pos3(bar,90); pos4(bar,90);
  1129. lft x1l=hround(.5w-.5rule_thickness); bot y1-rule_thickness=-d;
  1130. x0=x1=x2; top y0=h-.5u; x0-x3=x4-x0=3u+eps;
  1131. y3=y4=y0-.24asc_height-eps;
  1132. pos5(bar,angle(z4-z0)); z5l=z0;
  1133. pos6(bar,angle(z3-z0)); z6l=z0;
  1134. z9=.381966[.5[z3,z4],z0];
  1135. numeric t; path p; p=z4l{z9-z4}..z6r;
  1136. t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
  1137. filldraw z0..{z4-z9}z4r--subpath (0,t) of\\(z4l{z9-z4}..z6r)
  1138.  --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3l{z9-z3}..z5r)
  1139.  --z3r{z9-z3}..z0 & cycle;  % arrowhead and stem
  1140. penlabels(0,1,2,3,4,5,6,9);
  1141. pickup rule.nib;
  1142. y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]
  1143. +.5dot_size);
  1144. lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11;
  1145. y11=y12=math_axis-1.8(y-math_axis);
  1146. y11'=y12'=math_axis+1.8(y-math_axis);
  1147. draw z11--z12--z12'--z11'--cycle;
  1148. penlabels(11,12,11',12'); endchar;
  1149.  
  1150. cmchar "APLdownarrowbox";
  1151. beginchar(hex"6F",14u#,7u#+math_axis#,7u#-math_axis#);
  1152. italcorr math_axis#*slant-.5u#;
  1153. adjust_fit(0,0); pickup crisp.nib;
  1154. pos1(rule_thickness,0); pos2(rule_thickness,0);
  1155. pos3(bar,90); pos4(bar,90);
  1156. lft x1l=hround(.5w-.5rule_thickness); top y1+rule_thickness=h;
  1157. x0=x1=x2; bot y0=-d+.5u; x0-x3=x4-x0=3u+eps;
  1158. y3=y4=y0+.24asc_height+eps;
  1159. pos5(bar,angle(z4-z0)); z5l=z0;
  1160. pos6(bar,angle(z3-z0)); z6l=z0;
  1161. z9=.381966[.5[z3,z4],z0];
  1162. numeric t; path p; p=z4r{z9-z4}..z6r;
  1163. t=xpart(p intersectiontimes((x2r,-d)--(x2r,h))); y2=ypart point t of p;
  1164. filldraw z0..{z4-z9}z4l--subpath (0,t) of\\(z4r{z9-z4}..z6r)
  1165.  --z2r---z1r..z1l---z2l--subpath (t,0) of\\(z3r{z9-z3}..z5r)
  1166.  --z3l{z9-z3}..z0 & cycle;  % arrowhead and stem
  1167. penlabels(0,1,2,3,4,5,6,9);
  1168. pickup rule.nib;
  1169. y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]
  1170. +.5dot_size);
  1171. lft x11=hround u-eps; x11'=x11; x12=x12'=w-x11;
  1172. y11=y12=math_axis-1.8(y-math_axis);
  1173. y11'=y12'=math_axis+1.8(y-math_axis);
  1174. draw z11--z12--z12'--z11'--cycle;
  1175. penlabels(11,12,11',12'); endchar;
  1176.  
  1177. cmchar "APL box";
  1178. beginchar(hex"7E",14u#,7u#+math_axis#,7u#-math_axis#);
  1179. italcorr math_axis#*slant-.5u#;
  1180. adjust_fit(0,0);
  1181. pickup rule.nib;
  1182. y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]
  1183. +.5dot_size);
  1184. lft x1=hround u-eps; x1'=x1; x2=x2'=w-x1;
  1185. y1=y2=math_axis-1.8(y-math_axis);
  1186. y1'=y2'=math_axis+1.8(y-math_axis);
  1187. draw z1--z2--z2'--z1'--cycle;
  1188. penlabels(1,2,1',2'); endchar;
  1189.  
  1190. cmchar "APL input";
  1191. beginchar(hex"7D",14u#,7u#+math_axis#,7u#-math_axis#);
  1192. italcorr math_axis#*slant-.5u#;
  1193. adjust_fit(0,0);
  1194. pickup rule.nib;
  1195. y+.5dot_size=vround(math_axis+math_spread[.5x_height,.6x_height]
  1196. +.5dot_size);
  1197. rt x2 - lft x1=w-2u; x1'=x1; x2=x2'=w-x1;
  1198. y1=y2=math_axis-1.8(y-math_axis);
  1199. y3=y4=y1'=y2'=math_axis+1.8(y-math_axis);
  1200. y5=.66[y1,y1'];
  1201. x5=.5[x1,x2];
  1202. x2-x4 = x3-x1;
  1203. x4-x3 = 1.5rule_thickness;
  1204. draw z1--z2--z2'--z1'--cycle;
  1205. filldraw z3--z4--z5--cycle;
  1206. penlabels(1,2,3,4,5,1',2'); endchar;
  1207.  
  1208. cmchar "Hexagon";
  1209. beginchar(hex"37",2.43math_axis#+2u#,
  1210.           v_center(2.1math_axis#));
  1211. italcorr math_axis#*slant;
  1212. adjust_fit(0,0); pickup rule.nib;
  1213. numeric a; a=2.1math_axis/sqrt 3;
  1214. x4=x1+2a; x3=x2+a; x2=x6; x3=x5; .5[x2,x3] = .5[x1,x4] = good.x .5w;
  1215. y1 = y4 = .5[y2,y6] = good.y .5(h-d);
  1216. y2=y3; y5=y6; y6-y2=2.1math_axis;
  1217. draw z1--z2--z3--z4--z5--z6--cycle;
  1218. labels(1,2,3,4,5,6); endchar;
  1219.  
  1220. cmchar "Hexagon B";
  1221. beginchar(hex"39",2.1math_axis#+2u#,
  1222.           v_center(2.43math_axis#));
  1223. italcorr math_axis#*slant;
  1224. adjust_fit(0,0); pickup rule.nib;
  1225. numeric a; a=2.1math_axis/sqrt 3;
  1226. y4=y1+2a; y3=y2+a; y2=y6; y3=y5; .5[y2,y3] = .5[y1,y4] = good.y .5(h-d);
  1227. x1 = x4 = .5[x2,x6] = good.x .5w;
  1228. x2=x3; x5=x6; x6-x2=2.1math_axis;
  1229. draw z1--z2--z3--z4--z5--z6--cycle;
  1230. labels(1,2,3,4,5,6); endchar;
  1231.  
  1232. cmchar "Hexastar";
  1233. beginchar(hex"41",2.65math_axis#+2u#,
  1234.           v_center(2.3math_axis#));
  1235. italcorr math_axis#*slant;
  1236. adjust_fit(0,0); pickup light_rule.nib;
  1237. numeric a; a=2.3math_axis/sqrt 3;
  1238. x4=x1+2a; x3=x2+a; x2=x6; x3=x5; .5[x2,x3] = .5[x1,x4] = good.x .5w;
  1239. y1 = y4 = .5[y2,y6] = good.y .5(h-d);
  1240. y2=y3; y5=y6; y6-y2=2.3math_axis;
  1241. draw z1--z4; draw z2--z5; draw z3--z6;
  1242. labels(1,2,3,4,5,6); endchar;
  1243.  
  1244. cmchar "Hexastar B";
  1245. beginchar(hex"42",2.3math_axis#+2u#,
  1246.           v_center(2.65math_axis#));
  1247. italcorr math_axis#*slant;
  1248. adjust_fit(0,0); pickup light_rule.nib;
  1249. numeric a; a=2.3math_axis/sqrt 3;
  1250. y4=y1+2a; y3=y2+a; y2=y6; y3=y5; .5[y2,y3] = .5[y1,y4] = good.y .5(h-d);
  1251. x1 = x4 = .5[x2,x6] = good.x .5w;
  1252. x2=x3; x5=x6; x6-x2=2.3math_axis;
  1253. draw z1--z4; draw z2--z5; draw z3--z6;
  1254. labels(1,2,3,4,5,6); endchar;
  1255.  
  1256. cmchar "Davids star";
  1257. beginchar(hex"43",2.3math_axis#+2u#,
  1258.           v_center(2.65math_axis#));
  1259. italcorr math_axis#*slant;
  1260. adjust_fit(0,0); pickup light_rule.nib;
  1261. numeric a; a=2.3math_axis/sqrt 3;
  1262. y4=y1+2a; y3=y2+a; y2=y6; y3=y5; .5[y2,y3] = .5[y1,y4] = good.y .5(h-d);
  1263. x1 = x4 = .5[x2,x6] = good.x .5w;
  1264. x2=x3; x5=x6; x6-x2=2.3math_axis;
  1265. draw z1--z3--z5--cycle; draw z2--z4--z6--cycle;
  1266. labels(1,2,3,4,5,6); endchar;
  1267.  
  1268. cmchar "Approximate less than sign";
  1269. compute_spread(.45x_height#,.55x_height#);
  1270. spread#':=spread#; spread':=spread; % the spread of `$=$'
  1271. compute_spread(5/4x_height#,3/2x_height#);
  1272. beginchar(hex"3E",14u#,v_center(spread#+1.2spread#'+rule_thickness#));
  1273. italcorr h#*slant-u#;
  1274. adjust_fit(0,0); pickup rule.nib;
  1275. lft x2=hround 1.5u-eps; x1=x3=w-x2;
  1276. y1-y3=spread; y2=.5[y1,y3]=good.y h-.5(spread+rule_thickness);
  1277. draw z1--z2--z3;  % diagonals
  1278. pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
  1279. if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
  1280. x1'=x2; x2'=4u; x3'=w-x2'; x4'=w-x1';
  1281. bot y1'=bot y3'=-d; top y2'=top y4'=.8spread'-d;
  1282. draw z1'{up}...z2'{right}..{right}z3'...{up}z4';  % stroke
  1283. labels(1,2,3,1',2',3',4'); endchar;
  1284.  
  1285. cmchar "Approximate greater than sign";
  1286. compute_spread(.45x_height#,.55x_height#);
  1287. spread#':=spread#; spread':=spread; % the spread of `$=$'
  1288. compute_spread(5/4x_height#,3/2x_height#);
  1289. beginchar(hex"3F",14u#,v_center(spread#+1.2spread#'+rule_thickness#));
  1290. italcorr h#*slant-u#;
  1291. adjust_fit(0,0); pickup rule.nib;
  1292. lft x1=hround 1.5u-eps; x1=x3; x2=w-x1;
  1293. y1-y3=spread; y2=.5[y1,y3]=good.y h-.5(spread+rule_thickness);
  1294. draw z1--z2--z3;  % diagonals
  1295. pickup pencircle xscaled .7rule_thickness yscaled 1.4rule_thickness;
  1296. if vair#>.8curve#: pickup rule.nib; autorounded; fi % monoline
  1297. x1'=x1; x2'=4u; x3'=w-x2'; x4'=w-x1';
  1298. bot y1'=bot y3'=-d; top y2'=top y4'=.8spread'-d;
  1299. draw z1'{up}...z2'{right}..{right}z3'...{up}z4';  % stroke
  1300. labels(1,2,3,1',2',3',4'); endchar;
  1301.  
  1302. cmchar "double bar";
  1303. beginchar(hex"7C",2u#,asc_height#,0);
  1304. italcorr asc_height#*slant - u#;
  1305. adjust_fit(0,0); pickup rule.nib;
  1306. bot y1 = good.y oo; top y2 = good.y (h-oo);
  1307. top y1' + 1.5u = bot y2'; .5[y1',y2'] = .5h;
  1308. x1=x1'=x2=x2'=good.x .5w;
  1309. draw z1--z1'; draw z2--z2';
  1310. labels(1,2,1',2'); endchar;
  1311.  
  1312. cmchar "octagon";
  1313. beginchar(hex"38",
  1314.           18u#,asc_height#,desc_depth#);
  1315. pickup light_rule.nib;
  1316. y1=y8; x2=x3; y4=y5; x6=x7; y2=y7; y3=y6; x8=x5; x1=x4;
  1317. .5[y2,y3]=.5[y1,y4]=good.y .5(h-d);
  1318. .5[x1,x8]=.5[x2,x7]=good.x .5w;
  1319. x1-x8 = y3-y2 = sqrt2*(x2-x1) = (h+d)/2.62;
  1320. y4-y1=x2-x7;
  1321. draw (z1--z2--z3--z4--z5--z6--z7--z8--cycle);
  1322. labels(1,2,3,4,5,6,7,8); endchar;
  1323.  
  1324. cmchar "Gluon element";
  1325. beginchar(hex"50",6u#,v_center(1.4x_height#));
  1326. adjust_fit(0,0); pickup rule.nib;
  1327. y1=y5=h; y3=-d; y3'=0.8[y3,y1];
  1328. x1=0; x5=w; x3=x3'=.5w;
  1329. y2=y4=0.35[y3,y3'];
  1330. x2-x3=x3-x4=0.33w;
  1331. draw z1{right}...z3'...z2{down}...z3{left}...z4{up}...z3'...{right}z5;
  1332. labels(1,2,3,3',4,5); endchar;
  1333.  
  1334. cmchar "Gluon begin element";
  1335. beginchar(hex"51",6u#,v_center(1.4x_height#));
  1336. adjust_fit(0,0); pickup rule.nib;
  1337. y1=good.y math_axis; y2=h;
  1338. x1=0; x2=w;
  1339. draw z1{(1,2)}...{right}z2;
  1340. labels(1,2); endchar;
  1341.  
  1342. cmchar "Gluon end element";
  1343. beginchar(hex"52",6u#,v_center(1.4x_height#));
  1344. adjust_fit(0,0); pickup rule.nib;
  1345. y2=good.y math_axis; y1=h;
  1346. x1=0; x2=w;
  1347. draw z1{right}...{(1,-2)}z2;
  1348. labels(1,2); endchar;
  1349.  
  1350. cmchar "Telephone";
  1351. beginchar(hex"07",1.5asc_height#,asc_height#,0);
  1352. adjust_fit(0,0); pickup crisp.nib; autorounded;
  1353. numeric uu; uu = 1/20 asc_height;
  1354. bot y1 = 0; y2 = 3uu; y3 = 13uu; y4=y2; y5=y1; y0 = good.y 9uu;
  1355. lft x1 = hround (4uu+eps); x2 = x1; x4 = x5 = w-x1; x0 = x3 = .5 w;
  1356. y6 = y8 = y0 = .5[y9,y7]; x7 = x9 = x0 = .5[x8,x6];
  1357. y7-y9 = 8uu; x6-x8 = 9uu;
  1358. y6' = y8' = y0 = .5[y9',y7']; x7' = x9' = x0 = .5[x8',x6'];
  1359. y7'-y9' = 10.5uu+0.5+eps; x6'-x8' = 11.5uu+0.5+eps;
  1360. y10 = y15 = 10uu; y11 = y12 = y14 = y17 = y10+2uu;
  1361. y13 = y16 = y18 = y20 = y10+5uu; y21 = y10+5uu+eps; y19 = y10+8uu+eps;
  1362. x19=x21=x0; x20=hround(uu+eps); x18 = w-x20;
  1363. x12=hround(uu+eps); x17 = w-x12; x10= 2uu+eps; x15 = w-x10;
  1364. x11=x10+6uu; x13=x12+6uu; x14=x15-6uu; x16=x17-6uu;
  1365. filldraw z1---z2...z3...z4---z5--cycle; % body
  1366. erase filldraw z6'...z7'...z8'...z9'...cycle; % space for dial
  1367. filldraw z6...z7...z8...z9...cycle; % dial
  1368. filldraw z10--z11--z13--z12--cycle;
  1369. filldraw z14--z15--z17--z16--cycle;
  1370. filldraw z20{(3,1)}...z19{right}...{(3,-1)}z18--z17{(-3,1)}...
  1371.          z21{left}...{(-3,-1)}z12--cycle;
  1372. labels(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
  1373. labels(6',7',8',9'); endchar;
  1374.  
  1375.  
  1376. cmchar "\textstyle integral sign";
  1377. beginchar(hex"72",11u#,0,100/54dh#);
  1378. italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
  1379. adjust_fit(0,-ic#); pickup fine.nib;
  1380. pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(curve,180);
  1381. pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(curve,0);
  1382. pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
  1383. rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
  1384. x5=x4=x6; lft x5r=hround(.5w-.5curve);
  1385. top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
  1386. y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
  1387. bulb(3,2,1); bulb(7,8,9);  % bulbs
  1388. filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
  1389.  ..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
  1390. filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
  1391.  ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
  1392. penlabels(1,2,3,4,5,6,7,8,9); endchar;
  1393.  
  1394. cmchar "\textstyle loop-integral sign";
  1395. beginchar(hex"75",13u#,0,100/54dh#);
  1396. italcorr 0; % \TeX\ kerning between upper limit and lower limit
  1397. adjust_fit(0,-ic#); pickup fine.nib;
  1398. pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180);
  1399. pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0);
  1400. pos17(vair,-90); pos18(hair,-180); pos19(curve,-180);
  1401. rt x11r=hround(w-2u); x19=w-x11; x17=w-x13=4u;
  1402. x15=x14=x16; lft x15r=hround(.5w-.5curve);
  1403. top y13r=0; bot y17r=-d; y19-.5curve=vround(top y17l+.25curve);
  1404. y13-y11=y19-y17; y15=.5[y13,y17]=.5[y14,y16]; y14-y16=.6(y13-y17);
  1405. bulb(13,12,11); bulb(17,18,19);  % bulbs
  1406. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1407.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1408. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1409.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1410. pickup light_rule.nib;
  1411. x4 = x15; y8-y4=x2-x6=.8(y14-y16); y2=y15;
  1412. circle_points;
  1413. draw_circle;
  1414. labels(1,2,3,4,5,6,7,8);
  1415. penlabels(11,12,13,14,15,16,17,18,19); endchar;
  1416.  
  1417. cmchar "\textstyle two-dimensional integral sign";
  1418. beginchar(hex"73",17u#,0,100/54dh#);
  1419. italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
  1420. adjust_fit(0,-ic#); pickup fine.nib;
  1421. pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(curve,180);
  1422. pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180); %2
  1423. pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(curve,0);
  1424. pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0); %2
  1425. pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
  1426. pos17(vair,-90); pos18(hair,-180); pos19(curve,-180); %2
  1427. numeric ww; ww = 2/3w-2/3u;
  1428. numeric xx; xx = 1/3w+2/3u;
  1429. rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u;
  1430. rt x11r=hround(w-u); x19=w-x1; x17=w-x3; w-x13=3u; %2
  1431. x5=x4=x6; lft x5r=hround(.5ww-.5curve);
  1432. x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2
  1433. top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
  1434. y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
  1435. y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2
  1436. bulb(3,2,1); bulb(7,8,9);  % bulbs
  1437. bulb(13,12,11); bulb(17,18,19);  %2 bulbs
  1438. filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
  1439.  ..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
  1440. filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
  1441.  ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
  1442. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1443.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1444. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1445.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1446. pickup light_rule.nib;
  1447. penlabels(1,2,3,4,5,6,7,8,9);
  1448. penlabels(11,12,13,14,15,16,17,18,19); endchar;
  1449.  
  1450. cmchar "\textstyle two-dimensional surface-integral sign";
  1451. beginchar(hex"76",17u#,0,100/54dh#);
  1452. italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
  1453. adjust_fit(0,-ic#); pickup fine.nib;
  1454. pos21(curve,0); pos22(hair,0); pos23(vair,90); pos24(curve,180);
  1455. pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180); %2
  1456. pos25(curve,180); pos25'(curve,0); z25'=z25; pos26(curve,0);
  1457. pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0); %2
  1458. pos27(vair,-90); pos28(hair,-180); pos29(curve,-180);
  1459. pos17(vair,-90); pos18(hair,-180); pos19(curve,-180); %2
  1460. numeric ww; ww = 2/3w-2/3u;
  1461. numeric xx; xx = 1/3w+2/3u;
  1462. rt x21r=hround(ww-u); x29=ww-x21; x27=ww-x23=3u;
  1463. rt x11r=hround(w-u); x19=w-x21; x17=w-x23; w-x13=3u; %2
  1464. x25=x24=x26; lft x25r=hround(.5ww-.5curve);
  1465. x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2
  1466. top y23r=0; bot y27r=-d; y29-.5curve=vround(top y27l+.25curve);
  1467. y23-y21=y29-y27; y25=.5[y23,y27]=.5[y24,y26]; y24-y26=.6(y23-y27);
  1468. y11=y21; y13=y23; y14=y24; y15=y25; y16=y26; y17=y27; y19=y29; %2
  1469. bulb(23,22,21); bulb(27,28,29);  % bulbs
  1470. bulb(13,12,11); bulb(17,18,19);  %2 bulbs
  1471. filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1}
  1472.  ..tension atleast 1 and atleast .8..{z25-z24}z25e;  % upper curve
  1473. filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1
  1474.  ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e;  % lower curve
  1475. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1476.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1477. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1478.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1479. pickup light_rule.nib;
  1480. x4 = x25+.75u; y8-y4=x2-x6=.8(y14-y16); y2=y15;
  1481. circle_points;
  1482. x4' = x8' = x15-.75u;
  1483. x1' := x1 + (x4'-x4); x2' := x2 + (x4'-x4); x3' := x3 + (x4'-x4);
  1484. y1'=y1; y2'=y2; y3'=y3; y4'=y4; y8'=y8;
  1485. draw z8---z8'...z1'...z2'...z3'...z4'---z4...z5...z6...z7...cycle;
  1486. labels(1',2',3',4',4,5,6,7,8,8');
  1487. penlabels(11,12,13,14,15,16,17,18,19);
  1488. penlabels(21,22,23,24,25,26,27,28,29); endchar;
  1489.  
  1490. cmchar "\textstyle three-dimensional integral sign";
  1491. beginchar(hex"74",23u#,0,100/54dh#);
  1492. italcorr 3.5u#; % \TeX\ kerning between upper limit and lower limit
  1493. adjust_fit(0,-ic#); pickup fine.nib;
  1494. pos1(curve,0); pos2(hair,0); pos3(vair,90); pos4(curve,180);
  1495. pos11(curve,0); pos12(hair,0); pos13(vair,90); pos14(curve,180); %2
  1496. pos21(curve,0); pos22(hair,0); pos23(vair,90); pos24(curve,180); %3
  1497. pos5(curve,180); pos5'(curve,0); z5'=z5; pos6(curve,0);
  1498. pos15(curve,180); pos15'(curve,0); z15'=z15; pos16(curve,0); %2
  1499. pos25(curve,180); pos25'(curve,0); z25'=z25; pos26(curve,0); %3
  1500. pos7(vair,-90); pos8(hair,-180); pos9(curve,-180);
  1501. pos17(vair,-90); pos18(hair,-180); pos19(curve,-180); %2
  1502. pos27(vair,-90); pos28(hair,-180); pos29(curve,-180); %3
  1503. numeric ww; ww = 1/2w-u;
  1504. numeric xx; xx = 1/4w+.5u;
  1505. numeric www; www = 3/4w-.5u;
  1506. numeric xxx; xxx = 1/2w+u;
  1507. rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u;
  1508. rt x11r=hround(www-u); x19=www-x1; x17=www-x3; www-x13=3u; %2
  1509. rt x21r=hround(w-u); x29=w-x1; x27=w-x3; w-x23=3u; %3
  1510. x5=x4=x6; lft x5r=hround(.5ww-.5curve);
  1511. x15=x14=x16; lft x15r=hround(.5[xx,www]-.5curve); %2
  1512. x25=x24=x26; lft x25r=hround(.5[xxx,w]-.5curve); %3
  1513. top y3r=0; bot y7r=-d; y9-.5curve=vround(top y7l+.25curve);
  1514. y3-y1=y9-y7; y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
  1515. y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2
  1516. y21=y1; y23=y3; y24=y4; y25=y5; y26=y6; y27=y7; y29=y9; %3
  1517. bulb(3,2,1); bulb(7,8,9);  % bulbs
  1518. bulb(13,12,11); bulb(17,18,19);  %2 bulbs
  1519. bulb(23,22,21); bulb(27,28,29);  %3 bulbs
  1520. filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
  1521.  ..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
  1522. filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
  1523.  ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
  1524. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1525.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1526. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1527.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1528. filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1}
  1529.  ..tension atleast 1 and atleast .8..{z25-z24}z25e;  % upper curve
  1530. filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1
  1531.  ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e;  % lower curve
  1532. penlabels(1,2,3,4,5,6,7,8,9);
  1533. penlabels(11,12,13,14,15,16,17,18,19);
  1534. penlabels(21,22,23,24,25,26,27,28,29); endchar;
  1535.  
  1536. cmchar "\displaystyle integral sign";
  1537. beginchar(hex"77",14u#,0,150/54dh#);
  1538. italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
  1539. adjust_fit(0,-ic#); pickup fine.nib;
  1540. numeric bulb_size, max_size;
  1541. bulb_size=hround(bold+dw); max_size=bold+dw;
  1542. pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180);
  1543. pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0);
  1544. pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
  1545. rt x1r=hround(w-u); x9=w-x1; x7=w-x3=3u;
  1546. x5=x4=x6; lft x5r=hround(.5w-.5curve);
  1547. top y3r=0; bot y7r=-d;
  1548. y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
  1549. y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
  1550. bulb(3,2,1); bulb(7,8,9);  % bulbs
  1551. filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
  1552.  ..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
  1553. filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
  1554.  ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
  1555. penlabels(1,2,3,4,5,6,7,8,9); endchar;
  1556.  
  1557. cmchar "\displaystyle loop-integral sign";
  1558. beginchar(hex"7A",14u#,0,150/54dh#);
  1559. italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
  1560. adjust_fit(0,-ic#); pickup fine.nib;
  1561. numeric bulb_size, max_size;
  1562. bulb_size=hround(bold+dw); max_size=bold+dw;
  1563. pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180);
  1564. pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0);
  1565. pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180);
  1566. rt x11r=hround(w-u); x19=w-x11; x17=w-x13=3u;
  1567. x15=x14=x16; lft x15r=hround(.5w-.5curve);
  1568. top y13r=0; bot y17r=-d;
  1569. y19-.5bulb_size=vround(top y17l+.25bulb_size); y13-y11=y19-y17;
  1570. y15=.5[y13,y17]=.5[y14,y16]; y14-y16=.6(y13-y17);
  1571. bulb(13,12,11); bulb(17,18,19);  % bulbs
  1572. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1573.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1574. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1575.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1576. pickup light_rule.nib;
  1577. x4 = x15; y8-y4=x2-x6=.76(y14-y16); y2=y15;
  1578. circle_points;
  1579. draw_circle;
  1580. labels(1,2,3,4,5,6,7,8);
  1581. penlabels(11,12,13,14,15,16,17,18,19); endchar;
  1582.  
  1583. cmchar "\displaystyle two-dimensional integral sign";
  1584. beginchar(hex"78",23u#,0,150/54dh#);
  1585. italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
  1586. adjust_fit(0,-ic#); pickup fine.nib;
  1587. numeric bulb_size, max_size;
  1588. bulb_size=hround(bold+dw); max_size=bold+dw;
  1589. pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180);
  1590. pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180); %2
  1591. pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0);
  1592. pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0); %2
  1593. pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
  1594. pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180); %2
  1595. numeric ww; ww = 2/3w-4/3u;
  1596. numeric xx; xx = 1/3w+4/3u;
  1597. rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u;
  1598. rt x11r=hround(w-u); x19=w-x1; x17=w-x3; w-x13=3u; %2
  1599. x5=x4=x6; lft x5r=hround(.5ww-.5curve);
  1600. x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2
  1601. top y3r=0; bot y7r=-d;
  1602. y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
  1603. y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
  1604. y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2
  1605. bulb(3,2,1); bulb(7,8,9);  % bulbs
  1606. bulb(13,12,11); bulb(17,18,19);  %2 bulbs
  1607. filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
  1608.  ..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
  1609. filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
  1610.  ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
  1611. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1612.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1613. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1614.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1615. penlabels(1,2,3,4,5,6,7,8,9);
  1616. penlabels(11,12,13,14,15,16,17,18,19); endchar;
  1617.  
  1618. cmchar "\displaystyle two-dimensional surface-integral sign";
  1619. beginchar(hex"7B",23u#,0,150/54dh#);
  1620. italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
  1621. adjust_fit(0,-ic#); pickup fine.nib;
  1622. numeric bulb_size, max_size;
  1623. bulb_size=hround(bold+dw); max_size=bold+dw;
  1624. pos21(bulb_size,0); pos22(hair,0); pos23(vair,90); pos24(max_size,180);
  1625. pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180); %2
  1626. pos25(max_size,180); pos25'(max_size,0); z25'=z25; pos26(max_size,0);
  1627. pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0); %2
  1628. pos27(vair,-90); pos28(hair,-180); pos29(bulb_size,-180);
  1629. pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180); %2
  1630. numeric ww; ww = 2/3w-4/3u;
  1631. numeric xx; xx = 1/3w+4/3u;
  1632. rt x21r=hround(ww-u); x29=ww-x21; x27=ww-x23=3u;
  1633. rt x11r=hround(w-u); x19=w-x21; x17=w-x23; w-x13=3u; %2
  1634. x25=x24=x26; lft x25r=hround(.5ww-.5curve);
  1635. x15=x14=x16; lft x15r=hround(.5[xx,w]-.5curve); %2
  1636. top y23r=0; bot y27r=-d;
  1637. y29-.5bulb_size=vround(top y27l+.25bulb_size); y23-y21=y29-y27;
  1638. y25=.5[y23,y27]=.5[y24,y26]; y24-y26=.6(y23-y27);
  1639. y11=y21; y13=y23; y14=y24; y15=y25; y16=y26; y17=y27; y19=y29; %2
  1640. bulb(23,22,21); bulb(27,28,29);  % bulbs
  1641. bulb(13,12,11); bulb(17,18,19);  %2 bulbs
  1642. filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1}
  1643.  ..tension atleast 1 and atleast .8..{z25-z24}z25e;  % upper curve
  1644. filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1
  1645.  ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e;  % lower curve
  1646. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1647.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1648. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1649.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1650. pickup light_rule.nib;
  1651. x4 = x25+2u; y8-y4=x2-x6=.76(y14-y16); y2=y15;
  1652. circle_points;
  1653. x4' = x8' = x15-2u;
  1654. x1' := x1 + (x4'-x4); x2' := x2 + (x4'-x4); x3' := x3 + (x4'-x4);
  1655. y1'=y1; y2'=y2; y3'=y3; y4'=y4; y8'=y8;
  1656. draw z8---z8'...z1'...z2'...z3'...z4'---z4...z5...z6...z7...cycle;
  1657. labels(1',2',3',4',4,5,6,7,8,8');
  1658. penlabels(21,22,23,24,25,26,27,28,29);
  1659. penlabels(11,12,13,14,15,16,17,18,19); endchar;
  1660.  
  1661. cmchar "\displaystyle three-dimensional integral sign";
  1662. beginchar(hex"79",32u#,0,150/54dh#);
  1663. italcorr 4u#; % \TeX\ kerning between upper limit and lower limit
  1664. adjust_fit(0,-ic#); pickup fine.nib;
  1665. numeric bulb_size, max_size;
  1666. bulb_size=hround(bold+dw); max_size=bold+dw;
  1667. pos1(bulb_size,0); pos2(hair,0); pos3(vair,90); pos4(max_size,180);
  1668. pos11(bulb_size,0); pos12(hair,0); pos13(vair,90); pos14(max_size,180); %2
  1669. pos21(bulb_size,0); pos22(hair,0); pos23(vair,90); pos24(max_size,180); %3
  1670. pos5(max_size,180); pos5'(max_size,0); z5'=z5; pos6(max_size,0);
  1671. pos15(max_size,180); pos15'(max_size,0); z15'=z15; pos16(max_size,0); %2
  1672. pos25(max_size,180); pos25'(max_size,0); z25'=z25; pos26(max_size,0); %3
  1673. pos7(vair,-90); pos8(hair,-180); pos9(bulb_size,-180);
  1674. pos17(vair,-90); pos18(hair,-180); pos19(bulb_size,-180); %2
  1675. pos27(vair,-90); pos28(hair,-180); pos29(bulb_size,-180); %3
  1676. numeric ww; ww = 1/2w-2u;
  1677. numeric xx; xx = 1/4w+u;
  1678. numeric www; www = 3/4w-u;
  1679. numeric xxx; xxx = 1/2w+2u;
  1680. rt x1r=hround(ww-u); x9=ww-x1; x7=ww-x3=3u;
  1681. rt x11r=hround(www-u); x19=www-x1; x17=www-x3; www-x13=3u; %2
  1682. rt x21r=hround(w-u); x29=w-x1; x27=w-x3; w-x23=3u; %3
  1683. x5=x4=x6; lft x5r=hround(.5ww-.5curve);
  1684. x15=x14=x16; lft x15r=hround(.5[xx,www]-.5curve); %2
  1685. x25=x24=x26; lft x25r=hround(.5[xxx,w]-.5curve); %3
  1686. top y3r=0; bot y7r=-d;
  1687. y9-.5bulb_size=vround(top y7l+.25bulb_size); y3-y1=y9-y7;
  1688. y5=.5[y3,y7]=.5[y4,y6]; y4-y6=.6(y3-y7);
  1689. y11=y1; y13=y3; y14=y4; y15=y5; y16=y6; y17=y7; y19=y9; %2
  1690. y21=y1; y23=y3; y24=y4; y25=y5; y26=y6; y27=y7; y29=y9; %3
  1691. bulb(3,2,1); bulb(7,8,9);  % bulbs
  1692. bulb(13,12,11); bulb(17,18,19);  %2 bulbs
  1693. bulb(23,22,21); bulb(27,28,29);  %3 bulbs
  1694. filldraw stroke z3e{left}...z4e{(z5e-z4e)xscaled 1.1}
  1695.  ..tension atleast 1 and atleast .8..{z5-z4}z5e;  % upper curve
  1696. filldraw stroke z5'e{z6-z5}..tension atleast.8 and atleast 1
  1697.  ..{(z6e-z5'e)xscaled 1.1}z6e...{left}z7e;  % lower curve
  1698. filldraw stroke z13e{left}...z14e{(z15e-z14e)xscaled 1.1}
  1699.  ..tension atleast 1 and atleast .8..{z15-z14}z15e;  % upper curve
  1700. filldraw stroke z15'e{z16-z15}..tension atleast.8 and atleast 1
  1701.  ..{(z16e-z15'e)xscaled 1.1}z16e...{left}z17e;  % lower curve
  1702. filldraw stroke z23e{left}...z24e{(z25e-z24e)xscaled 1.1}
  1703.  ..tension atleast 1 and atleast .8..{z25-z24}z25e;  % upper curve
  1704. filldraw stroke z25'e{z26-z25}..tension atleast.8 and atleast 1
  1705.  ..{(z26e-z25'e)xscaled 1.1}z26e...{left}z27e;  % lower curve
  1706. penlabels(1,2,3,4,5,6,7,8,9);
  1707. penlabels(11,12,13,14,15,16,17,18,19);
  1708. penlabels(21,22,23,24,25,26,27,28,29); endchar;
  1709.  
  1710. cmchar "ataribox (Alternate)";                                
  1711. beginchar(hex"6D",5.5pt#,7.5pt#,0); 
  1712.    pickup pencircle scaled .85pt;                                               
  1713.    x1=0.05w; y1=0;                                                              
  1714.    x2=x1;    y2=h;                                                              
  1715.    x3=0.95w; y3=y2;                                                             
  1716.    x4=x3;    y4=y1;                                                             
  1717.    fill z1--z2--z3--z4--cycle;                                                  
  1718.    x5=x1;    y5=.5h;                                                            
  1719.    x6=.5w;   y6=h;                                                              
  1720.    x7=x3;    y7=y5;                                                             
  1721.    x8=x6;    y8=0;                                                              
  1722.    undraw z5--z6--z7--z8--cycle;                                                
  1723.    penlabels(1,2,3,4,5,6,7,8);                                                  
  1724. endchar;                                                                        
  1725.  
  1726. charlist hex"72": hex"77";  % integral signs
  1727. charlist hex"73": hex"78";  % iintegral signs
  1728. charlist hex"74": hex"79";  % iiintegral signs
  1729. charlist hex"75": hex"7A";  % ointegral signs
  1730. charlist hex"76": hex"7B";  % oiintegral signs
  1731.  
  1732. input wasychr
  1733.